//leetcode
//https://leetcode.cn/problems/ways-to-make-a-fair-array/

class Solution//前缀奇偶和,后缀奇偶和
{
public:
    int waysToMakeFair(vector<int>& nums) 
    {
        int prefix_odd=0,prefix_even=0;
        int suffix_odd=0,suffix_even=0;

        for(int i=0;i<nums.size();i++)
        {
            if(i&1) suffix_odd+=nums[i];//0是偶数
            else suffix_even+=nums[i];
        }

        int ans=0;
        for(int i=0;i<nums.size();i++)
        {
            if(i&1) suffix_odd-=nums[i];//应为是后缀和,所以到某个数的时候要减去这个数字
            else suffix_even-=nums[i];//顺序遍历不用记录后缀和
             //先计算是否相等,再加上这个位上的数字,这样做的目的是应为条件是要删除这个数,先不算进去,后面再恢复
             //删除这个数后,后缀的奇数下标变成偶数,所后缀奇数和变成偶数和
            if(prefix_even+suffix_odd==prefix_odd+suffix_even)  ans++;

            if(i&1) prefix_odd+=nums[i];//奇数从下标为1开始,偶数从下标为0开始
            else prefix_even+=nums[i];
        }
        return ans;
    }
};